import axiosInstance from '../utils/requests.js';

// 修改API函数，使其能够接收更多参数
export const getProductsList = async (page = 1, pageSize = 10, search = '') => {
  try {
    // 构建查询参数
    const params = new URLSearchParams();
    params.append('page', page);
    params.append('page_size', pageSize);
    if (search) {
      params.append('search', search);
    }
    // 使用正确的API路径
    const response = await axiosInstance.get(`/api/products/list/?${params.toString()}`);
    return response.data;
  } catch (error) {
    console.error('获取商品数据失败:', error);
    throw error;
  }
}

// 添加商品API函数
export const addProduct = async (productData) => {
  try {
    // 再次验证价格有效性
    const price = parseFloat(productData.price);
    if (isNaN(price) || price <= 0) {
      throw new Error('价格必须是大于0的数字');
    }
    
    // 创建FormData对象用于文件上传
    const formData = new FormData();
    
    // 添加商品基本信息
    formData.append('name', productData.name);
    formData.append('price', price.toString()); // 转换为字符串，避免精度问题
    
    if (productData.description) {
      formData.append('description', productData.description);
    }
    
    // 添加商品图片
    if (productData.image) {
      formData.append('image', productData.image);
    }
    
    // 尝试捕获网络错误
    try {
      const response = await axiosInstance.post('/api/products/create/', formData, {
        headers: {
          'Content-Type': 'multipart/form-data'
        }
      });
      
      return response.data;
    } catch (networkError) {
      // 网络错误处理
      if (networkError.code === 'ECONNABORTED') {
        throw new Error('请求超时，请检查网络连接');
      } else if (!networkError.response) {
        throw new Error('无法连接到服务器，请检查网络连接');
      }
      throw networkError;
    }
  } catch (error) {
    console.error('添加商品失败:', error);
    // 增强错误信息，确保包含尽可能多的上下文
    if (error.response && error.response.data) {
      // 将详细错误信息打印到控制台，方便调试
      console.log('API错误详情:', error.response.data);
      throw {
        message: error.response.data.message || JSON.stringify(error.response.data),
        response: error.response
      };
    }
    throw error;
  }
};

// 更新商品API函数
export const updateProduct = async (productId, productData) => {
  try {
    // 再次验证价格有效性
    const price = parseFloat(productData.price);
    if (isNaN(price) || price <= 0) {
      throw new Error('价格必须是大于0的数字');
    }
    
    // 创建FormData对象用于文件上传
    const formData = new FormData();
    
    // 添加商品基本信息
    formData.append('name', productData.name);
    formData.append('price', price.toString()); // 转换为字符串，避免精度问题
    
    if (productData.description) {
      formData.append('description', productData.description);
    } else {
      formData.append('description', '');
    }
    
    // 添加商品图片
    if (productData.image && typeof productData.image !== 'string') {
      formData.append('image', productData.image);
    }
    
    // 尝试捕获网络错误
    try {
      const response = await axiosInstance.put(`/api/products/${productId}/update/`, formData, {
        headers: {
          'Content-Type': 'multipart/form-data'
        }
      });
      
      return response.data;
    } catch (networkError) {
      // 网络错误处理
      if (networkError.code === 'ECONNABORTED') {
        throw new Error('请求超时，请检查网络连接');
      } else if (!networkError.response) {
        throw new Error('无法连接到服务器，请检查网络连接');
      }
      throw networkError;
    }
  } catch (error) {
    console.error('更新商品失败:', error);
    // 增强错误信息，确保包含尽可能多的上下文
    if (error.response && error.response.data) {
      // 将详细错误信息打印到控制台，方便调试
      console.log('API错误详情:', error.response.data);
      throw {
        message: error.response.data.message || JSON.stringify(error.response.data),
        response: error.response
      };
    }
    throw error;
  }
};

// 删除商品API函数
export const deleteProduct = async (productId) => {
  try {
    const response = await axiosInstance.delete(`/api/products/${productId}/delete/`);
    return response.data;
  } catch (error) {
    console.error('删除商品失败:', error);
    throw error;
  }
};